home *** CD-ROM | disk | FTP | other *** search
/ Skunkware 5 / Skunkware 5.iso / src / X11 / xarchie-2.0.9 / ptalloc.c < prev    next >
C/C++ Source or Header  |  1995-06-18  |  2KB  |  91 lines

  1. /*
  2.  * Copyright (c) 1989, 1990, 1991 by the University of Washington
  3.  *
  4.  * For copying and distribution information, please see the file
  5.  * <copyright.h>.
  6.  *
  7.  * v1.3.2 - bpk - for Archie client 1.3.2, except gf ZERO->BZERO
  8.  * v1.1.2 - gf  11/02/91 - renamed ZERO() to BZERO() for X
  9.  */
  10.  
  11. #include <copyright.h>
  12. #include <stdio.h>
  13.  
  14. #include <pfs.h>
  15. #include "config.h"    /* gf */
  16. #include "stringdefs.h"    /* for correct definition of bzero used by BZERO */
  17. #ifdef MSDOS
  18. # define free _pfree   /* otherwise we get conflicts with free() */
  19. #endif
  20.  
  21. static PTEXT    free = NULL;
  22. int         ptext_count = 0;
  23. int        ptext_max = 0;
  24.  
  25. /*
  26.  * ptalloc - allocate and initialize ptext structure
  27.  *
  28.  *    PTALLOC returns a pointer to an initialized structure of type
  29.  *    PTEXT.  If it is unable to allocate such a structure, it
  30.  *    returns NULL.
  31.  */
  32. PTEXT
  33. ptalloc()
  34.     {
  35.     PTEXT    vt;
  36.     if(free) {
  37.         vt = free;
  38.         free = free->next;
  39.     }
  40.     else {
  41.         vt = (PTEXT) malloc(sizeof(PTEXT_ST));
  42.         if (!vt) return(NULL);
  43.         ptext_max++;
  44.     }
  45.     ptext_count++;
  46.  
  47.     /* nearly all parts are 0 [or NULL] */
  48.     BZERO(vt);
  49.     /* The offset is to leave room for additional headers */
  50.     vt->start = vt->dat + MAX_PTXT_HDR;
  51.  
  52.     return(vt);
  53.     }
  54.  
  55. /*
  56.  * ptfree - free a VTEXT structure
  57.  *
  58.  *    VTFREE takes a pointer to a VTEXT structure and adds it to
  59.  *    the free list for later reuse.
  60.  */
  61. void
  62. ptfree(vt)
  63.     PTEXT    vt;
  64.     {
  65.     vt->next = free;
  66.     vt->previous = NULL;
  67.     free = vt;
  68.     ptext_count--;
  69.     }
  70.  
  71. /*
  72.  * ptlfree - free a VTEXT structure
  73.  *
  74.  *    VTLFREE takes a pointer to a VTEXT structure frees it and any linked
  75.  *    VTEXT structures.  It is used to free an entrie list of VTEXT
  76.  *    structures.
  77.  */
  78. void
  79. ptlfree(vt)
  80.     PTEXT    vt;
  81.     {
  82.     PTEXT    nxt;
  83.  
  84.     while(vt != NULL) {
  85.         nxt = vt->next;
  86.         ptfree(vt);
  87.         vt = nxt;
  88.     }
  89.     }
  90.  
  91.